import random
import threading
import time
import dashscope

# 模拟用户评论，使用一个数据结构，key为用户ID，value为评论，随机添加 心情真好、心情不好 。两个词语
# 另外一个线段阻塞读取这个数据结构，当数据结构没数据阻塞有数据继续读取，并且调用百炼平台的deepseek r1 模型 判断用户评论是非为正向的
dashscope.api_key = 'sk-0b765fcace52444e9c07f98f478cc7f5'
comments = {}
# lock = threading.Lock()


def add_random_comments():
    i = 0
    while True:
        i += 1
        user_id = f"user_{i}"

        comment = random.choice(
            ["音质和降噪确实不错，跑步狂甩也不掉。但耳塞戴半小时就胀痛，APP连接十次有三次失败。适合耳朵耐造的技术党，普通用户慎入。",
             "ENC双麦降噪过滤80%杂音，人声清晰似耳语！轻至3.3g无感佩戴，28小时超长续航，通勤搭档就选TA！"
             "IPX6防水无惧暴汗，狂甩不掉稳挂耳！定向传音0漏音，42小时续航+闪充5分钟跑完全马，运动党闭眼冲！",
             "漏气之王！压缩羽绒服三天全回弹，收纳箱塞爆。找客服理论反被教育‘操作不当’，附赠的抽气泵用两次就报废。避雷！这质量不如拼夕夕9.9包邮！",
             "双动圈单元三频炸裂！高音穿云、低音震心，空间音频360°头部追踪，听歌像坐在演唱会VIP席！",
             "花色和官网图基本一致，刺绣细节挺精致。可惜面料偏硬，洗一次就缩水半码，169元性价比一般。当家居衫穿还行，出门约会建议选别家。",
             "-99dB降噪深度秒静世界！六麦矩阵精准消噪，通透模式轻捂即开，图书馆/地铁瞬切静音结界！",
             "主动降噪+通透模式自由切换，嘈杂办公室秒专注！双金标认证无损音质，续航140小时告别电量焦虑！",
             "169元卷王驾到！四麦降噪过滤90%噪音，钛振膜音质越级挑战千元机，轻如羽毛入睡佩戴无感！",
             "“宣传的‘超长续航’纯属虚假广告！轻度使用不到5小时电量见底，充电时发热到不敢握，售后检测竟说‘正常现象’。5000元买了个电子暖手宝，彻底拉黑这品牌！”"])
        comments[user_id] = comment
        time.sleep(random.uniform(1, 3))



def process_comments():
    while True:

        if not comments:
            continue
        user_id, msg = comments.popitem()
        # 调用百炼平台的deepseek r1 模型 判断用户评论是非为正向的
        meg = get_model_result(user_id, msg)
        print(meg)


prompt = [
    {"role": "system", "content": '''
    **角色**：你是一名专业电商情感分析师，需精准判断用户评论的情感倾向，区分好评（积极）、中评（中性）、差评（消极），并给出可解释的原因。  

    **任务**：  
    1. **情感分类**：  
       - **好评**：包含明确赞美、强烈推荐、高满意度表述（如“质量超好”“强烈推荐”）。  
       - **中评**：无明显情感倾向，或混合情感但无主导倾向（如“还行吧”“一般般”）。  
       - **差评**：表达不满、投诉、失望或明确缺点（如“质量差”“客服态度恶劣”）。  
    2. **原因分析**：提取评论中的关键词或短语，说明分类依据（如“提及‘物流慢’导致差评”）。  
    3. **强度标注**（可选）：对好评/差评标注情感强度（1-5分，5分为最强）。  

    **输出格式**（严格遵循JSON）：
          {
             "userId": 用户名称,
             "msg": 用户评论，
             "result": 结论：如 好评、中评、差评
             "remark": 备注好评、中评、差评的原因，如：质量超好
          }
    '''}
]


def get_model_result(user_id, comment):
    prompt.append({"role": "user", "content": f"用户ID：{user_id}\n用户评论：{comment}"})
    response = dashscope.Generation.call(
        model='qwen-turbo',
        messages=prompt,
        result_format='message',
        temperature = 1,
        stream=False
    )
    print( response.output.choices[0].message)
    return response.output.choices[0].message.content


if __name__ == '__main__':
    comment_thread = threading.Thread(target=process_comments)
    comment_thread.daemon = True
    comment_thread.start()

    add_comment_thread = threading.Thread(target=add_random_comments)
    add_comment_thread.daemon = True
    add_comment_thread.start()

    add_comment_thread.join()
    comment_thread.join()
